perm filename ERRSUB[AP,SYS] blob sn#000458 filedate 1972-08-23 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00002 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001
 00002 00002	Subroutine to append an error message to the file ERRORS.
 00006 ENDMK
⊗;
;Subroutine to append an error message to the file ERRORS.

comment ⊗	The following ACs are needed:
A,B,C,C+1,C+2,CNT,BPTR,CHAR,AC1,AC2.  B+1 and B+2 are assumed to be C and C+1.	⊗

ADDERR:	CALL	[SIXBIT /RESET/]
	MOVEI	B,1
	MOVEI	CNT,10
AGAINE:	INIT	1,0
	SIXBIT	/DSK/
	XWD	ERRBFO,0
	HALT	.-3
	SETZM	ERRORF+1
	SETZM	ERRORF+2
	SETZM	ERRORF+3
	ENTER	1,ERRORF
	JRST	[RELEAS	1,
		 SOJLE	CNT,SPLIT
		 CALL	B,[SIXBIT /SLEEP/]
		 JRST	AGAINE]
	INIT	2,0
	SIXBIT	/DSK/
	ERRBFI
	HALT	.-3
	SETZM	ERRORF+3
	LOOKUP	2,ERRORF
	JRST	COPIED
COPYER:	SOSG	ERRBFI+2
	IN	2,
	JRST	[ILDB	CHAR,ERRBFI+1
		 JUMPE	CHAR,COPIED
		 SOSG	ERRBFO+2
		 OUT	1,
		 JRST	[IDPB	CHAR,ERRBFO+1
			 JRST	COPYER]
		 FOO: HALT FOO]
	STATO	2,20000
	HALT	.
COPIED:	RELEAS	2,
	CALL	B,[SIXBIT /DATE/]
	CALL	C,[SIXBIT /TIMER/]
	IDIVI	C,=60*=3600
	IDIVI	C+1,=3600
	IDIVI	C+1,=10
	HRLZI	AC1,40B24		;put a blank in AC1
	ADDI	AC1,60(C+2)		;ONES PLACE OF MINUTES
	ROT	AC1,-7
	ADDI	AC1,60(C+1)		;TENS PLACE OF MINUTES
	ROT	AC1,-7
	IDIVI	C,=10
	ADDI	AC1,60(C+1)		;ONES PLACE OF HOURS
	ROT	AC1,-7
	ADDI	AC1,60(C)		;TENS PLACE OF HOURS
	ROT	AC1,-7
	IDIVI	B,=31
	ADDI	B+1,1
	IDIVI	B+1,=10
	MOVEI	AC2,60(B+2)		;ONES PLACE OF DAY
	ROT	AC2,-7
	ADDI	AC2,60(B+1)		;TENS PLACE OF DAY
	ROT	AC2,-16
	ADD	AC2,[ASCII /-/]		;PUT "-" BETWEEN MONTH AND DAY
	IDIVI	B,=12
	ADDI	B+1,1
	IDIVI	B+1,=10
	ADDI	AC2,60(B+2)		;ONES PLACE OF MONTH
	ROT	AC2,-7
	ADDI	AC2,60(B+1)		;TENS PLACE OF MONTH
	ROT	AC2,-7
	MOVE	BPTR,[POINT 7,AC1]
	MOVEI	CNT,=10			;put 10 chars into output buffer
DAYTIM:	ILDB	CHAR,BPTR		;output the time, month, and day
	SOSG	ERRBFO+2
	OUT	1,
	JRST	[IDPB	CHAR,ERRBFO+1
		 SOJG	CNT,DAYTIM
		 JRST	ADDMSG]
	HALT	.
ADDMSG:	HRLI	A,440700		;output error message
MESSAG:	ILDB	CHAR,A
	SOSG	ERRBFO+2
	OUT	1,
	JRST	[IDPB	CHAR,ERRBFO+1
		 JUMPN	CHAR,MESSAG
		 JRST	CLOSEM]
	HALT	.
CLOSEM:	RELEAS	1,
SPLIT:	CALL	[SIXBIT /EXIT/]